package br.com.sovi.mobile.resources.ponto;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;

import br.com.sovi.persistence.Ponto;

@XmlRootElement(name = "ponto")
@XmlAccessorType(XmlAccessType.FIELD)
public class PontoVO {

	private Date data, dataDispositivo;

	private Double longitude, latitude;
	
	private static SimpleDateFormat sdf = new SimpleDateFormat("HHmmssddMMyyyy");

	public PontoVO() {
	}

	public PontoVO(Ponto ponto) {
		setData(ponto.getData());
		setDataDispositivo(ponto.getDataDispositivo());
		setLatitude(ponto.getLatitude());
		setLongitude(ponto.getLongitude());
	}

	public PontoVO(String param) {
		String[] params = param.split(",");
		
		try {
			setDataDispositivo(sdf.parse(params[0]));
		}
		catch (ParseException e) {
			e.printStackTrace();
		}

		setLatitude(Double.valueOf(params[1]));
		setLongitude(Double.valueOf(params[2]));
	}
	
	public Ponto toBean() {
		Ponto ponto = new Ponto();
		
		ponto.setDataDispositivo(getDataDispositivo());
		ponto.setLatitude(getLatitude());
		ponto.setLongitude(getLongitude());
		
		return ponto;
	}

	public static List<PontoVO> convertList(List<Ponto> pontos) {
		List<PontoVO> vos = new ArrayList<PontoVO>();
		
		for (Ponto ponto : pontos) {
			vos.add(new PontoVO(ponto));
		}
		
		return vos;
	}

	public Date getData() {
		return data;
	}

	public void setData(Date data) {
		this.data = data;
	}

	public Double getLongitude() {
		return longitude;
	}

	public void setLongitude(Double longitude) {
		this.longitude = longitude;
	}

	public Double getLatitude() {
		return latitude;
	}

	public void setLatitude(Double latitude) {
		this.latitude = latitude;
	}

	public void setDataDispositivo(Date dataDispositivo) {
		this.dataDispositivo = dataDispositivo;
	}

	public Date getDataDispositivo() {
		return dataDispositivo;
	}

}
